<html>
<head>
<TITLE>Description of CSE5317/4305</TITLE>
</head>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<center>
<H1>Description of CSE5317/4305</H1>
</center>
<p>
<table>
<tr><td><b>Class:</b></td><td>Monday, Wednesday 5:30-6:50pm</td></tr>
<tr><td><b>Instructor:</b></td><td><A HREF="http://lambda.uta.edu/">Leonidas Fegaras</A></td></tr>
<tr><td><b>Office:</b></td><td>GACB 115 (General Academic Classroom Bldg)</td></tr>
<tr><td><b>Phone:</b></td><td>(817) 272-3629</td></tr>
<tr><td><b>Email:</b></td><td><img align=top src="http://lambda.uta.edu/sig.jpg" ALIGN=middle></td></tr>
<tr><td><b>Office hours:</b></td><td>Monday and Wednesday 4:00-5:30pm</td></tr>
</table>
<p>
<hr>
<p>
<dl>
<dt><b>Catalogue Description:</b>
<dd>Review of programming language structures, translation, and storage 
allocation. Introduction to context-free grammars and their 
description. Design and construction of compilers including
lexical analysis, parsing and code generation techniques. 
Error analysis and simple code optimizations will be introduced. <p>
<dt><b>Objectives:</b>
<dd>The goal of this course is to give a working knowledge of the basic techniques used in the
implementation of modern programming languages.
The course is centered around a substantial programming project:
implementing a complete compiler for a realistic language. Students successfully completing this course
will be able to apply the theory and methods learned during the course
to design and implement optimizing compilers for most programming
languages.
<p>
<dt><b>Prerequisites:</b>
<dd>Prerequisites: CSE3302 (Programming Languages), which requires both CSE3315 (Theoretical Concepts)
and CSE3322 (Computer Architecture I), or consent of instructor.<br>
Students must:
<ul>
<li>have knowledge and programming experience with Java;
<li>be familiar with the functions of modern computer architectures and be
able to program in an assembly language;
<li>be familiar with data structure concepts and algorithms (such as lists, trees, sorting, hashing, etc).
</ul>
Students without adequate preparation are at substantial risk of failing this course.
<p>
<dt><b>Required Textbook and Notes:</b>
<dd><ul>
<li>Andrew W. Appel: <a href="http://www.cambridge.org/us/catalogue/catalogue.asp?isbn=052182060X">Modern Compiler Implementation in Java, Second Edition</a>.
 Cambridge University Press, 2002.
<li>Lecture notes.
<li>Lecture slides (in PowerPoint), which are based on the lecture notes.
</ul>
<p>
<dt><b>Other Texts:</b>
<dd>You may find the following texts
useful for additional background and explanation:
<ul>
<li>A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman: Compilers: Principles, Techniques, and Tools, second edition, (this is the
classic red "Dragon" book), Addison-Wesley, 2007. This is the best reference manual on compiler construction in
existence, although it is sometimes considered hard to read.
<li>C. Fischer and R. LeBlanc, Crafting a compiler with C. Bejamin/Cummings, 1991.
Excellent textbook but terrible C code.
</ul><p>
<dt><b>Grading:</b>
<dd>The final grade will be based on
<ul>
<li>30% project
<li>20% first midterm exam
<li>20% second midterm exam
<li>30% final exam (comprehensive)
</ul>
The course work will be the same for graduates and undergraduates.
Final grades will be assigned according to the following scale:
<pre>
     A: score >= 90, B: 80 <= score < 90, C: 70 <= score < 80, D: 60 <= score < 70, F: score < 60,
</pre>
Sometimes, I use lower cutoff points, depending on the overall performance of the class. 
<p>
<dt><b>Reading Assignments:</b>
<dd>Completing reading assignments before the class period in which
the material is discussed is essential to success in this class.
Not all the assigned material will be covered in class, but you
will be responsible for it on exams.
<p>
<dt><b>Exams:</b>
<dd>All exams are closed-book and closed-notes.
The second midterm exam will cover the material of the second part of the course only,
while the final exam will cover the material
from the first lecture up to and including the last lecture.
Makeup exams will be given only when the instructor (at least 3 days before the exam)
has approved the request to change the exam time.
Approval will be given for illness, sickness or death in the family only. 
<p>
<dt><b>Project:</b>
<dd>The course project is to construct a compiler for a small programming language
and will involve: lexical analysis, parsing, semantic analysis (type-checking), and code generation
for a MIPS architecture. This project will be done in Java. The project is to be
completed in several stages spaced throughout the term
and will be done by groups of 3 students.
Project reports will be marked 20%-off per day.
No further extensions will be allowed. No excuses, no exceptions.
<p>
<dt><b>Cheating:</b>
<dd>You are allowed to collaborate with students of your project group only.
<b>No copying is permitted.</b> Cheating involves giving assistance
to or receiving assistance from members of other groups,
copying code from the web, etc.
The punishment for cheating is a zero in the assignment and will be subject to
the university's academic dishonesty policy.
If you have any questions regarding an assignment, 
see the instructor or teaching assistant. 
<p>
<dt><b>Special Accommodations:</b>
<dd>If you require an accommodation based on disability, I would like to meet with you in the privacy of my office,
during the first week of the semester, to make sure you are appropriately accommodated.
<p>
<dt><b>Course web page:</b>
<dd><A HREF="index.html">http://lambda.uta.edu/cse5317/</A><br>
Please visit this web page often; it will contain class notes, solutions, etc.
<p>
<dt><b>Related web pages:</b>
<dd>
<ul>
<li><A HREF="spring07/index.html">cse5317 Spring 2007</a>
<li><a href="http://www.cs.cornell.edu/courses/cs412/2006sp/">Compiler course at Cornell</a>
<li><a href="http://www.cs.purdue.edu/homes/hosking/502/index.html">Compiler course at Purdue</a>
<li><a href="http://web.cecs.pdx.edu/~apt/cs321_2004/">Compiler course at Portland State</a>
<li><a href="http://www.cs.rutgers.edu/~ryder/415/">Compiler course at Rutgers</a>
</ul>
</dl>
<p>
<hr>
<P>
<ADDRESS>Last modified: 01/01/08 by <A HREF="http://lambda.uta.edu/">Leonidas Fegaras</A></ADDRESS>
